<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>


    // 一个变量声明了，但是没有给其赋值，它的值为undefined
    // var xxx;

    // 表示以下代码在严格模式下运行
    // "use strict";

    // 变量的数据类型：
    // 数值型
    // 字符型
    // 对象
    // null
    // undefined
    // 布尔型（true 、false）


    // js 是弱类型语言
    // var a = 1;
    // a = '我爱祖国';
    // console.log(a)

    // var a = {
    //     name: '张三',
    //     age : 18
    // };

    // console.log(a.name)
    // 可以动态的为对象添加属性
    // a.sex = '男';
    // console.log(a);

    // 遍历对象
    // for (var i in a){
    //     console.log(a[i])
    // }

    // Number对象就是我们数值型的数据的包装对象
    var a = 1;
    // 将一个变量的值转成字符型的数据
    var b = a.toString();

    console.log(a + 1);
    console.log(b + 1);


    /**
     * 函数
     *
     * function 函数声明的标志
     * sum 函数名
     * 函数名后面的括号内存放的是参数（形参），该内容是可选的
     * {}表示函数体，这里面可以写我们的处理逻辑
     * 函数体内可以有return，表示该函数的返回值。当然也可以没有return
     *
     * 函数内部，执行过程中，只要遇到return，表示该函数的执行已经结束
     *
     * 函数声明完并不会执行, 只有被调用的时候才会执行。
     */


    function sum(a, b) {

        console.log(111)
        // a + b;

        // var c = a + b + 3;
        // return c;

        // console.log(123567);

        if (a > b){
            return a - b;
        }else{
            return b - a * b;
        }
    }


    /**
     * 函数调用
     * 函数名的名字，还有参数（实参）
     */

    sum(5, 4);


    var c = sum(1, 4);
    
    console.log(c);


    function f() {
        console.log(3333)
    }
    f();


    /**
     * 匿名函数
     *
     * 即：没有名字的函数
     *
     */


    var xxx = function () {

        console.log(44444)
    };

    xxx();


    var yyy = function (x, y) {

        return x + y;
    };

    var d = yyy(1, 3) + 18;

    console.log(d);



    var obj = {

        name: '王五',

        run: function () {
            console.log('跑得快')
            },
        say: function (x) {
                console.log(1+1+x)
            }
        

    };

    obj.run();

    // obj.say = function (x) {

    //     console.log(x)
    // }

    obj.say('不做大哥好多年');


   var xx = {
       name: '小栗子',
       sex: '男',
       run:function () {
           console.log(this.name);
           console.log('跑的真快啊')
       },

       hobby:{
           first: '游泳',
           'second': '打太极',
           "third" : '打游戏'
       }
   }


   console.log(xx.hobby.second)


    xx.run();


    // var x = true ? 1 : 0;
    // console.log(x)

    var a = true;

    console.log(typeof a);
    console.log(typeof a.toString());


    var b = 'abcdefghi';
    //返回指定索引处的字符，索引从0开始
    console.log(b.charAt(2));

    var c = '哈哈哈哈哈';
    // 连接两条或多条字符串，功能和+类似
    console.log(b.concat(c, '呵呵呵呵呵呵呵呵呵'));

    var d = 'fsadshcdkjgUbfdsjhadhfgbjls';

    // 返回字符串中第一个出现指定字符串的位置
    console.log(d.indexOf('d'));

    // 返回字符串中最后一次出现指定字符串的位置
    console.log(d.lastIndexOf('d'));

    // todo 待学习
    // match(regex) 在字符串中查找指定值
    // replace(regex, newString)将字符串中的某些字符替换成其它字符
    // search(regex) 针对某执行值对字符串进行查找
    // split(delimiter)将字符串分配为数组


    // 从一个字符串中截取一个新的字符串(如果指定结尾，不包含有边界) 参数1：起始位置， 参数2：结束位置
    console.log(d.slice(4, 8));
    console.log(d.slice(4));
    console.log(d.slice(4, -1));

    // 从一个字符串中截取一个新的字符串 参数1：起始位置， 参数2：截取数量
    console.log(d.substr(-4, 3));

    // 和slice方法的功能一样，只是不能接受负值作为参数
    console.log(d.substring(4, 8));


    // console.log(d.toUpperCase());
    // console.log(d.toLowerCase());


    var d = new Date();

    console.log(d);

    console.log(d.getFullYear());
    console.log(d.getMonth());
    console.log(d.getDate());

    console.log(d.getHours());
    console.log(d.getMinutes());
    console.log(d.getSeconds());

    // d.setFullYear(2018)
    // console.log(d)

    // 讲一个事件字符串转换成时间戳
    console.log(Date.parse('2019-04-11 12:30:20'));



    console.log(Math.PI);

    console.log(Math.abs(-1));


    // 进一法取整， 向上取与该值最接近的整数
    console.log(Math.ceil(1.000000001));

    // 退一法取整（地板取整）， 向下取与该值最接近的整数
    console.log(Math.floor(1.99999999900001));

    // 幂运算， 求x的y次方
    // console.log(Math.pow(x, y));

    console.log(Math.round(1.49));

    console.log(Math.random());

    console.log('========')

    //随机获取一个0-10之间的整数
    
    
    function f1() {

        var code = '';
        for (var i = 0; i < 6; i++) {
            code += Math.floor(Math.random() * 10)
        }
        return code
    }

    console.log(f1());


    var f = 'asfdgsgfdbsndzxbvcnxm,ascxvbxm,asndbvdsm,abcxms,dabcxdfmsaxfcbfmzsx';

    console.log(f.length)




    //作业：获取指定为数的验证码（验证码应该为数字和字母的组合）



    // for (var i = 0; i < 10000; i++) {
    //     console.log(f1())
    // }








































</script>


</body>
</html>